;Atentie! S-ar putea ca diagnosticul sa nu fie cel prezis
;Mai cautati si in alte surse.:)

(deftemplate intrebare
(slot stringIntrebare)
(slot raspuns)
)
(assert (intrebare (stringIntrebare nil)(raspuns nil)))

(defrule q1
(intrebare (stringIntrebare nil)(raspuns nil))
=>
(printout t "Calculatorul porneste ? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "Calculatorul porneste")(raspuns ?r)))
)

(defrule q2
(intrebare (stringIntrebare "Calculatorul porneste")(raspuns DA))
=>
(printout t "PC-ul booteaza ? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "PC-ul booteaza")(raspuns ?r)))
)

(defrule q3
(intrebare (stringIntrebare "Calculatorul porneste")(raspuns NU))
=>
(printout t "Este conectat la curent ? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "Este conectat la curent")(raspuns ?r)))
)
(defrule q4
(intrebare (stringIntrebare "Este conectat la curent")(raspuns DA))
=>
(printout t "Schimba cablul de alimentare. Poate fi defect." crlf)
)
(defrule q5
(intrebare (stringIntrebare "Este conectat la curent")(raspuns NU))
=>
(printout t "Calculatorul nu este conectat la curent. Ce astepti, sa-l conectez eu???" crlf)
)

(defrule q6
(intrebare (stringIntrebare "PC-ul booteaza")(raspuns NU))
=>
(printout t "Apare interfata windows ? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "Apare interfata windows")(raspuns ?r)))
)
(defrule q7
(intrebare (stringIntrebare "PC-ul booteaza")(raspuns DA))
=>
(printout t "Da-i pace si asteapta..." crlf)
)

(defrule q8
(intrebare (stringIntrebare "Apare interfata windows")(raspuns DA))
=>
(printout t "Poti introduce parola ? (DA/NU)" crlf)
(bind ?r (read))
(assert (intrebare (stringIntrebare "Poti introduce parola")(raspuns ?r)))
)
(defrule q9
(intrebare (stringIntrebare "Apare interfata windows")(raspuns NU))
=>
(printout t "Hard-disc-ul este deplasat. Pune-l la loc." crlf)
)

(defrule q10
(intrebare (stringIntrebare "Poti introduce parola")(raspuns NU))
=>
(printout t "PC-ul este blocat ? (DA/NU)" crlf) 
(bind ?r (read))
(assert (intrebare (stringIntrebare "PC-ul este blocat")(raspuns ?r)))
)
(defrule q11
(intrebare (stringIntrebare "Poti introduce parola")(raspuns DA))
=>
(printout t "Da-i pace, merge perfect, vrei sa-l strici..." crlf)
)

(defrule q12
(intrebare (stringIntrebare "PC-ul este blocat")(raspuns DA))
=>
(printout t "Du-l la service... :-P" crlf)
)    

(defrule q13
(intrebare (stringIntrebare "PC-ul este blocat")(raspuns NU))
=>
(printout t "Si atunci ce mai vrei?" crlf)
) 

(run)

(facts)